home *** CD-ROM | disk | FTP | other *** search
Wrap
// Inform Clients that race has started func void NotifyRaceStart() { var Gui_Component pComponent; var CGuestUser pdtData; var Net_Client pClient; var i32x i,iNumClients; var i32x iUserId; var i32x irteamid; // get client list iNumClients = GetComponentNumber(g_pAncestorComponent); i=0; print("MS : Notify Race start...\n"); print("###Warning Not all clients have to join the race !!!\n"); while(i<iNumClients) { pComponent = GetComponent( g_pAncestorComponent, i); if (pComponent) { pdtData = GetPrimaryData( pComponent); iUserId = pdtData.m_iUserId; pClient = pdtData.m_pClient; irteamid = Join_GetIntFromKey( g_stJoins.m_iUser_iPreRaceTeamId, iUserId); if (irteamid>=0) { print("\tClient:"+ Join_GetStringFromKey(g_stJoins.m_iUser_szLogin,iUserId) + " Id :"+itoa(iUserId)+"\n"); pClient<< mUser_InRaceStart(irteamid); pClient << mUser_ForceRace(); } } i=i+1; } } // Inform Clients that race has stopped func void NotifyRaceStop() { var Gui_Component pComponent; var CGuestUser pdtData; var i32x i,iNumClients; var Net_Client pClient; // get client list iNumClients = GetComponentNumber(g_pAncestorComponent); // Inform Client that resolution server is stopped i=0; while(i<iNumClients) { pComponent = GetComponent( g_pAncestorComponent, i); if (pComponent) { pdtData = GetPrimaryData( pComponent); pClient = pdtData.m_pClient; pClient<< mUser_InRaceStop(); } i=i+1; } } // *** Inform all clients of phase change *** func void NotifyEndOfGameMode() { var Gui_Component pComponent; var CGuestUser pdtData; var i32x i; var Net_Client pClient; var i32x iNumClients,iLastStageID; // Last Stage Raced iLastStageID = GetLastStageID(); iNumClients = GetComponentNumber(g_pAncestorComponent); i=0; while(i<iNumClients) { pComponent = GetComponent( g_pAncestorComponent, i); if (pComponent) { pdtData = GetPrimaryData( pComponent); pClient = pdtData.m_pClient; pClient << mEndOfGameMode(iLastStageID); } i = i+1; } } func void PrepareForRace() { var Gui_Component pComponent; var CGuestUser pdtData; var CInRaceUser pdtInRaceData; // Current phase is now the in race phase print("MS : Prepare To Race:\n"); println("\tRaceId:"+itoa(GetCurrentRaceID())); println("\tStageId:"+itoa(GetCurrentStageID())); println("\tDay:"+itoa(GetCurrentDay())); //mao debug compute tactics for the race GenerateRaceRatings(); // Send PreRace data to resolution server CreateInRaceServer(g_iInRaceServerPort); // Set the new interface for each client connected var i32x i; var Net_Client pClient; var i32x iNumClients; var i32x iUserId; var i32x iTeamId; var i32x iPreRaceTeamId; print("MS : Inform clients of race start:\n"); i=0; iNumClients = GetComponentNumber(g_pAncestorComponent); println("num clients : "+ itoa(iNumClients)); while(i<iNumClients) { pComponent = GetComponent( g_pAncestorComponent, i); if (pComponent) { pdtData = GetPrimaryData( pComponent); iUserId = pdtData.m_iUserId; pClient = pdtData.m_pClient; // add inrace interface pdtInRaceData = new CInRaceUser; AddInterface(pComponent,iInRace,pdtInRaceData); // Add the client to the RServer iTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId, iUserId); iPreRaceTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iPreRaceTeamId, iUserId); if(iPreRaceTeamId == -1) { // User team is not register for race println("\tUser "+Join_GetStringFromKey(g_stJoins.m_iUser_szLogin,iUserId)+" not in race with team "+Join_GetStringFromKey(g_stJoins.m_iTeam_szName,iTeamId)); } else { // Send to the client the RServer IP and port println("\tUser "+Join_GetStringFromKey(g_stJoins.m_iUser_szLogin,iUserId)+" in race with team "+Join_GetStringFromKey(g_stJoins.m_iTeam_szName,iTeamId)); println("\t\tPreRaceId:"+itoa(iPreRaceTeamId)); } } i = i+1; } // synchronize db Database_SendSynchronization(DATABASE_SERVER); // notify Launch race LaunchRace(0,SendEvent,SendInterface); NotifyRaceStart(); }